import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import { resolve } from "path";
import Components from "unplugin-vue-components/vite";
import { VantResolver } from "@vant/auto-import-resolver";
import viteCompression from "vite-plugin-compression"; // ✅ gzip压缩
// import postcsspxtoviewport from "postcss-px-to-viewport-8-plugin";
// import vueDevTools from 'vite-plugin-vue-devtools'
export default defineConfig({
    resolve: {
        alias: [
            {
                find: "@",
                replacement: resolve(__dirname, "src")
            },
            {
                find: "@css",
                replacement: resolve(__dirname, "src/css")
            }
        ],
        extensions: [".vue", ".ts", ".js", ".json", ".mjs"]
    },
    server: {
        host: true,
        port: 4000,
        open: true
    },
    plugins: [
        vue(),
        vueJsx(),
        // vueDevTools(),
        Components({
            resolvers: [VantResolver()]
        }),
        viteCompression({
            threshold: 10240,
            algorithm: "gzip",
            ext: ".gz"
        })
    ],
    css: {
        preprocessorOptions: {
            scss: {
                // api: 'modern-compiler',
                silenceDeprecations: ["legacy-js-api", "import"],
                additionalData: `@use "@/styles/variables.scss" as *;`
            }
        },
        postcss: {
            plugins: [
                // postcsspxtoviewport({
                //     unitToConvert: "px", // 需要转换的单位，默认为"px"
                //     viewportWidth: 375, // 设计稿的视口宽度（iPhone 6/7/8）
                //     unitPrecision: 5, // 单位转换后保留的精度
                //     propList: ["*"], // 能转化为vw的属性列表，*表示所有
                //     viewportUnit: "vw", // 希望使用的视口单位
                //     fontViewportUnit: "vw", // 字体使用的视口单位
                //     selectorBlackList: ["ignore-", "van-"], // 需要忽略的CSS选择器
                //     minPixelValue: 1, // 设置最小的转换数值，小于等于1px不转换
                //     mediaQuery: false, // 媒体查询里的单位是否需要转换
                //     replace: true, // 是否直接更换属性值，而不添加备用属性
                //     exclude: [], // 忽略某些文件夹下的文件或特定文件
                //     landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件
                //     landscapeUnit: "vw", // 横屏时使用的单位
                //     landscapeWidth: 568 // 横屏时使用的视口宽度
                // })
            ]
        }
    }
});
